package com.hccl.mongoEntities;

/**
 * 业务节点实体
 */

import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hccl.mongoEntities.CommandEntity;
import com.hccl.mongoEntities.NoMatchOrInputEntity;
import entities.Reply;
import entities.Slot;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.annotations.*;
import org.mongodb.morphia.query.Query;
import org.mongodb.morphia.query.UpdateOperations;

@Entity(value = "menus", noClassnameStored = true)
public class NavigationEntity {
    @Id
    protected String id;

    public List<Reply> getReply() {
        return reply;
    }

    public void setReply(List<Reply> reply) {
        this.reply = reply;
    }

    protected List<Reply> reply;
    @Reference(idOnly=true,lazy=true)
    @JsonIgnore
    private NavigationEntity parent;
    @Reference(idOnly=true,lazy=true)
    protected List<NavigationEntity> subStateNode=new ArrayList<NavigationEntity>();
    @JsonIgnore
    protected int level;
    @Reference(idOnly=true,lazy=true)
    @JsonIgnore
    protected List<GrammarRuleEntity> rules = new ArrayList<GrammarRuleEntity>();
    @JsonIgnore
    protected List<String> corpus = new ArrayList<String>();;
    protected Reply reListenReply;
    protected List<String> conflictList = new ArrayList<>();
    protected List<CommandEntity> commands;
    protected Reply helpReply;
    protected NoMatchOrInputEntity noMatch;
    protected NoMatchOrInputEntity noInput;
    protected String init_process;
    List<String> actionList;
    List<String> targetList;
    List<Slot> slots;
//    public NavigationEntity(NavigationEntity parent){
//        this.parent = parent;
//    }

    public String getInit_process() {
        return init_process;
    }

    public void setInit_process(String init_process) {
        this.init_process = init_process;
    }

    public List<NavigationEntity> getSubStateNode() {
        return subStateNode;
    }

    public List<CommandEntity> getCommands() {
        return commands;
    }

    public void setCommands(List<CommandEntity> commands) {
        this.commands = commands;
    }

    public void setSubStateNode(List<NavigationEntity> subStateNode) {
        this.subStateNode = subStateNode;
    }

    public Reply getReListenReply() {
        return reListenReply;
    }

    public void setReListenReply(Reply reListenReply) {
        this.reListenReply = reListenReply;
    }

    public List<String> getConflictList() {
        return conflictList;
    }

    public void setConflictList(List<String> conflictList) {
        this.conflictList = conflictList;
    }

    public List<String> getCorpus() {
        return corpus;
    }

    public void setCorpus(List<String> corpus) {
        this.corpus = corpus;
    }

    public Reply getHelpReply() {
        return helpReply;
    }

    public void setHelpReply(Reply helpReply) {
        this.helpReply = helpReply;
    }

    public NoMatchOrInputEntity getNoMatch() {
        return noMatch;
    }

    public void setNoMatch(NoMatchOrInputEntity noMatch) {
        this.noMatch = noMatch;
    }

    public NoMatchOrInputEntity getNoInput() {
        return noInput;
    }

    public void setNoInput(NoMatchOrInputEntity noInput) {
        this.noInput = noInput;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public NavigationEntity getParent() {
        return parent;
    }

    public void setParent(NavigationEntity parent) {
        this.parent = parent;
    }

    public List<GrammarRuleEntity> getRules() {
        return rules;
    }

    public void setRules(List<GrammarRuleEntity> rules) {
        this.rules = rules;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public List<String> getActionList() {
        return actionList;
    }

    public void setActionList(List<String> actionList) {
        this.actionList = actionList;
    }

    public List<String> getTargetList() {
        return targetList;
    }

    public void setTargetList(List<String> targetList) {
        this.targetList = targetList;
    }

    public List<Slot> getSlots() {
        return slots;
    }

    public void setSlots(List<Slot> slots) {
        this.slots = slots;
    }
}